package edu.pucsp.predatorprey.simulador.java.terreno.impl;

import java.util.Collection;
import java.util.Iterator;

import edu.pucsp.predatorprey.simulador.java.posicao.impl.Posicao;

public class ListaPosicao implements Iterable<Posicao> {

	private final Collection<Posicao> posicoes;

	private final Posicao posicaoReferencia;

	protected ListaPosicao(Collection<Posicao> posicoes, Posicao posicaoReferencia) {
		this.posicoes = posicoes;
		this.posicaoReferencia = posicaoReferencia;
	}

	@Override
	public Iterator<Posicao> iterator() {
		return new ListaPosicaoIterator(this);
	}

	private class ListaPosicaoIterator implements Iterator<Posicao> {

		private final Iterator<Posicao> iterator;

		public ListaPosicaoIterator(ListaPosicao listaPosicao) {
			this.iterator = ListaPosicao.this.posicoes.iterator();
		}

		@Override
		public boolean hasNext() {
			return this.iterator.hasNext();
		}

		@Override
		public Posicao next() {
			Posicao posicao = this.iterator.next();
			int x = posicao.getX() - ListaPosicao.this.posicaoReferencia.getX();
			int y = posicao.getY() - ListaPosicao.this.posicaoReferencia.getY();
			return new Posicao(x, y);
		}

		@Override
		public void remove() {

		}

	}
}
